package org.wang.generalcode.modules.sys.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.wang.generalcode.modules.sys.constant.RedisKeyConstants;
import org.wang.generalcode.modules.sys.mapper.ConfigMapper;
import org.wang.generalcode.modules.sys.pojo.entity.Config;
import org.wang.generalcode.modules.sys.pojo.params.ConfigPageParams;
import org.wang.generalcode.modules.sys.pojo.vo.ConfigVO;
import org.wang.generalcode.modules.sys.service.IConfigService;

import java.util.List;

/**
 * 系统配置 服务实现类
 *
 * @author wz
 * @since 2024-08-08
 */
@Service
public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements IConfigService {

	@Resource
	private  RedisTemplate<String, Object> redisTemplate;

	@Override
	public IPage<ConfigVO> selectConfigPage(IPage<ConfigVO> page, ConfigPageParams config) {
		return page.setRecords(baseMapper.selectConfigPage(page, config));
	}

	@Override
	public boolean refreshCache() {
		redisTemplate.delete(RedisKeyConstants.SYSTEM_CONFIG_KEY);
		List<Config> list = this.list();
		if (list != null) {
			list.forEach(item -> redisTemplate.opsForValue().set(RedisKeyConstants.SYSTEM_CONFIG_KEY + item.getConfigKey(), item));
			return true;
		}
		return false;
	}

}
